Portable SQL Functions for Geographies
Description
These functions are only available from Alpha Anywhere when Portable SQL is used. They are intended to insulate you from the differences between the native SQL geography implementations in the supported databases.
Discussion
All of the examples assume that you will be substituting the correct SpatialReferenceID value for the database currently in use for the argument :SRID.
GeogAsBinary
GeogAsBinary as C(Object as Geography)
Return the object description in the Well Known Binary (WKB) format.
select GeogAsBinary(g.Location) from GeogTest g
GeogAsText
GeogAsText as C(Object as Geography)
Return the object description in the Well Known Text (WKT) format.
select GeogAsText(g.Location) from GeogTest g
GeogCreateFromBinary
GeogCreateFromBinary as Geography(Binary as B [, SpatialReferenceID as N])
Create a geography object from Well Known Binary (WKB) format.
dim MyBlob as B = base64decode("AQEAAAAAAAAAAAAkwAAAAAAAAChA") args.add("WKB", MyBlob) Connection.Execute("select GeogAsText(GeogCreateFromBinary(:WKB)) from GeogTest g")
GeogCreateFromText
GeogCreateFromText as Geography(Text as C [, SpatialReferenceID as N])
Create a geography object from Well Known Text (WKT) format.
select first 1 GeogAsText(GeogCreateFromText('POINT(-10 27)')) from GeogTest g
GeogCreateLine
GeogCreateLine as Geography (Longitude as N, Latitude as N ... [,SpatialReferenceID as N])
Constructs a geographic line from two or more longitude/latitude pairs.
select GeogCreateLine(1,2,3,4,5,6, :SRID) from GeogTest g
GeogCreateLocation
GeogCreateLocation as Geography (Longitude as N, Latitude as N [,SpatialReferenceID as N])
Constructs a geographic location from a longitude/latitude pair.
select GeogCreateLocation(1,2, :SRID) from GeogTest g
GeogCreatePolygon
GeogCreatePolygon as Geography (Longitude as N, Latitude as N ... [,SpatialReferenceID as N])
Constructs a geographic polygon from three or more longitude/latitude pairs.
select GeogCreatePolygon(-70, 42, -70, 32, -60, 32, -60, 42, -70, 42, :SRID) from GeogTest g
GeogDistanceBetween
GeogDistanceBetween as N (Object as Geography, Object as Geography)
Returns the distance between two objects in the default unit, typically meters.
select GeogDistanceBetween(g.Location, g.Location2) from GeogTest g
GeogLatitude
GeogLatitude as N (Location as Geography)
Returns the latitude value for a geographic location.
select GeogLatitude(g.Location) from GeogTest g
GeogLocationIntersectsLine
GeogLocationIntersectsLine as L (Location as Geography, Line as Geography, Tolerance as N)
Returns true if the location intersects the line or is within the tolerance distance from it.
select g.Name from GeogTest g where GeogLocationIntersectsLine(g.Location, g.Line)
GeogLocationIsWithinPolygon
GeogLocationIsWithinPolygon as L (Location as Geography, Polygon as Geography, Tolerance as N)
Returns true if the location is contained within the polygon or within the tolerance distance from it.
select g.Name from GeogTest g where GeogLocationIsWithinPolygon(g.Location, g.Polygon)
GeogLocationIsWithinRadius
GeogLocationIsWithinRadius as L (Location as Geography, Point as Geography, Radius as N, Tolerance as N)
Returns true if the location is within the radius defined around the point or within the tolerance defined.
select g.Name from GeogTest g where GeogLocationIsWithinRadius(g.Location, g.TargetLocation, 50)
GeogLongitude
GeogLongitude as N (Location as Geography)
Returns the longitude value for a geographic location.
select GeogLongitude(g.Location) from GeogTest g
GeogSRID
GeogSRID as N (Object as Geography)
Returns the Spatial Reference Identifier (SRID) assigned to the object.
select GeogSRID(g.Location) from GeogTest g
GeogType
GeogType as C (Object as Geography)
Returns LOCATION, LINE, or POLYGON if the geography object is one of them. Values returned for other types are not guaranteed to be consistent across databases.
select GeogType(g.Location) from GeogTest g
Important Note:
At least one database requires a table name alias in SQL statements that refer to geography objects. All of our geography samples use an alias for the table referenced in your FROM clause, and you will want to as well. For example, in the Portable SQL below g is an alias for table GeogTest:
select GeogAsText(g.Location) from GeogTest g
More discussion and examples can be found on Common Geography Database Tasks.
See Also
- Geographic Databases
- Changes to SQL Objects for Geometry
- Portable SQL Functions for Geographies
- Common Geography Database Tasks
- Database-specific Geography Tasks
- DB2-specific Geography Tasks
- MySQL-specific Geography Tasks
- Oracle-specific Geography Tasks
- PostgreSQL-specific Geography Tasks
- SQL Server-specific Geography Tasks
- SQL Geography Examples